package com.umpay.privi.dao.on.sys;

import java.util.List;
import java.util.Map;

import com.umpay.common.persist.ibatis.DataAccessException;
import com.umpay.privi.dao.EntityDao;
import com.umpay.privi.model.sys.User;

/** 
 * desc:用户Dao类
 * <p>创建人：Ding Zhe 创建日期：Apr 19, 2013 </p>
 * @version V1.0  
 */
public interface UserDao  extends EntityDao<User> {
		/**
		 * desc:通过用户编号查询用户
		 * <p>创建人：Ding Zhe , Apr 19, 2013 5:36:53 PM</p>
		 * @param sysId 系统编号
		 * @param userId 用户编号
		 * @return
		 * @throws DataAccessException
		 */
		User get(String userId)throws DataAccessException;
		
		/**
		 * desc:通过用户编号查询用户
		 * <p>创建人：lijing , Apr 19, 2013 5:36:53 PM</p>
		 * @param sysId 系统编号
		 * @param userId 用户编号
		 * @return
		 * @throws DataAccessException
		 */
		User getUser(Map<String, Object> qryMap)throws DataAccessException;
		
		/**
		 * desc:查询系统中使用该角色的用户
		 * <p>创建人：Ding Zhe , May 5, 2013 4:18:44 PM</p>
		 * @return
		 * @throws DataAccessException
		 */
		List<User> findByRoleId(Map<String, Object> paraMap)throws DataAccessException;
		/**
		 * desc:查询系统中使用该角色的用户
		 * <p>创建人：lijing , May 5, 2013 4:18:44 PM</p>
		 * @param roleId 角色编号
		 * @param sysId 系统编号
		 * @return
		 * @throws DataAccessException
		 */
		List<Map<String, Object>> queryUsingUserByRoleId(int roleId,short sysId) throws DataAccessException;

		/**
		 * desc:根据userId和sysId更新用户的登录时间
		 * @author 肖明 2013-5-3
		 * @param sysId 系统编号
		 * @param userId 用户编号
		 * @throws DataAccessException
		 */
		public int updateLoginTime(String sysId, String userId) throws DataAccessException;

		/**
		 * desc:根据userId和sysId更新用户的登出时间
		 * @author 肖明 2013-5-3
		 * @param sysId 系统编号
		 * @param userId 用户编号
		 * @throws DataAccessException
		 */
		public int updateLogoutTime(String sysId, String userId) throws DataAccessException;

		/**
		 * desc:根据userId查询用户可用的资源id
		 * @author 肖明 2013-5-6
		 * @param userId 用户编号
		 * @throws DataAccessException
		 */
		public List<Integer> findResourcesByUserId(String userId) throws DataAccessException;

		/**
		 * desc:根据userId查询用户可用的菜单id
		 * @author 肖明 2013-5-6
		 * @param userId 用户编号
		 * @throws DataAccessException
		 */
		public List<Integer> findMenusByUserId(String userId) throws DataAccessException;
		/**
		 * 
		 * desc:根据user信息查询用户列表
		 * <p>创建人：liuguangjun , May 9, 2013 9:13:44 PM</p>
		 * @param reqMap
		 * @return
		 * @throws DataAccessException
		 */
		public List<User> findUserListByKeys(Map<String, Object> reqMap) throws DataAccessException;
		/**
		 * 
		 * desc:根据user信息查询用户列表（分页）
		 * <p>创建人：liuguangjun , May 10, 2013 4:41:35 PM</p>
		 * @param reqMap
		 * @param startIndex 开始记录索引
		 * @param pageSize 一页的记录数
		 * @return
		 * @throws DataAccessException
		 */
		public List<Map<String, Object>> findUsersForPage(Map<String, Object> reqMap,Integer startIndex,Integer pageSize) throws DataAccessException;

		/**
		 * 
		 * desc:根据user信息分页查询用户总条数
		 * <p>创建人：liuguangjun , May 10, 2013 4:27:52 PM</p>
		 * @param reqMap
		 * @return
		 * @throws DataAccessException
		 */
		public Integer findUserPageList_count(Map<String, Object> reqMap) throws DataAccessException ;
		
		/**
		 * desc:获取本组内的管理员
		 * @author lijing 2013-5-6
		 * @param userId 用户编号
		 * @throws DataAccessException
		 */
		public List<User> findAdminByGroupId(Map<String, Object>qryMap) throws DataAccessException;
		
		/**
		 * desc:获取系统管理员下级管理员
		 * @author lijing 2013-5-6
		 * @param userId 用户编号
		 * @throws DataAccessException
		 */
		public List<User> findNextClassAdminsByGroupId(Map<String, Object>qryMap) throws DataAccessException;
		
		/**
		 * desc：修改用户信息
		 * @author lijing 2013-5-6
		 * @param userId 用户编号
		 * @throws DataAccessException
		 */
		public Integer updateUser(Map<String, Object>qryMap) throws DataAccessException;
		
		/**
		 * desc：判断组内用户是否全部禁用
		 * @author lijing 2013-5-6
		 * @param qryMap 
		 * @throws DataAccessException
		 */
		public boolean isAllUserLockInGroup(Map<String, Object>qryMap) throws DataAccessException;
		
		/**
		 * 
		 * desc:关联用户组分页查询所有用户
		 * <p>创建人：liuguangjun , May 18, 2013 3:41:49 PM</p>
		 * @param qryMap
		 * @return
		 * @throws DataAccessException
		 */
		public List<User> findUserPageListByUserGroup(Map<String, Object> reqMap,Integer startIndex,Integer pageSize) throws DataAccessException;
		/**
		 * 
		 * desc:关联用户组分页查询所有用户总条数
		 * <p>创建人：liuguangjun , May 10, 2013 4:27:52 PM</p>
		 * @param reqMap
		 * @return
		 * @throws DataAccessException
		 */
		public Integer findUserPageListByUserGroup_count(Map<String, Object> reqMap) throws DataAccessException;
		
}



